package com.note.chh.notebook.UI.base;


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;

import com.note.chh.notebook.Api.Constant;
import com.note.chh.notebook.R;
import com.note.chh.notebook.Uitls.RudenessScreenHelper;
import com.note.chh.notebook.Uitls.TipUtils;
import com.note.chh.notebook.Uitls.UserUtil;

import butterknife.ButterKnife;
import butterknife.Unbinder;

import static android.content.Context.INPUT_METHOD_SERVICE;

/**
 * A simple {@link Fragment} subclass.
 */
public abstract class BaseFragment extends Fragment {

    private View mView = null;
    private Unbinder unbinder;
    private Context context;
    public BaseFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (mView==null) {
            mView = inflater.inflate(bindLayout(), container, false);
            UserUtil.dLog(" onCreateView ");
        }
        ViewGroup parent = (ViewGroup) mView.getParent();
        if (parent!=null) {
            parent.removeView(mView);
        }
        return mView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        unbinder = ButterKnife.bind(this, mView);
        if (this.context==null) {
            this.context = getActivity();
            initView(mView);
            initData();
            initListener();
            UserUtil.dLog(" onViewCreated ");
        }
//        UserUtil.dLog(" onViewCreated "+((ViewGroup) mView.getParent()==null));
    }

    //[绑定布局]
    public abstract int bindLayout();
    //[初始化控件]
    public abstract void initView(View view);
    //[初始化数据]
    public abstract void initData();
    //初始化监听事件
    public void initListener(){}
    //######################################################################################//
//#############################       消息土司      #####################################//
//######################################################################################//
    //显示消息土司，默认2秒
    public void showToast(String content){
        TipUtils.tipNormal(context,content);
    }
    //显示消息土司，自己定义时间
    public void showToast(String content,int second){
        TipUtils.tipTime(context,content,second);
    }
    //显示消息成功提示，一般用于上传成功、创建成功...,默认显示2秒
    public void showSuccess(String content){
        TipUtils.tipSuccess(context,content);
    }
    //显示消息失败提示,默认2秒
    public void showError(String content){
        TipUtils.tipError(context,content);
    }
    //显示消息警告提示，默认2秒
    public void showWarning(String content){
        TipUtils.tipWarning(context,content);
    }
    //显示加载动画
    public void showLoading(String content){
        TipUtils.tipLoading(context,content);
    }
    //关闭加载动画
    public void closeLoading(){
        TipUtils.tipColseLoading();
    }
//######################################################################################//
//#############################    显示与隐藏软键盘   #####################################//
//######################################################################################//
    //隐藏软件盘
    public void hideSoftInput() {
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE);
        if (getActivity().getCurrentFocus() != null) {
            imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
        }
    }
    //显示软键盘
    public void showInputMethod(){
        if (getActivity().getCurrentFocus() != null){
            InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE);
            imm.showSoftInputFromInputMethod(getActivity().getCurrentFocus().getWindowToken(),0);
        }
    }
//######################################################################################//
//#############################      防止快速点击    #####################################//
//######################################################################################//
    //[防止快速点击]
    private boolean fastClick() {
        long lastClick = 0;
        if (System.currentTimeMillis() - lastClick <= 1000) {
            return false;
        }
        lastClick = System.currentTimeMillis();
        return true;
    }
//######################################################################################//
//#############################       页面跳转      #####################################//
//######################################################################################//
    //不携带数据的页面跳转
    public void startActivity(Class<?> clz) {
        startActivity(clz, null);
    }
    //携带数据的页面跳转
    public void startActivity(Class<?> clz, Bundle bundle) {
        Intent intent = new Intent();
        intent.setClass(getActivity(), clz);
        if (bundle != null) {
            intent.putExtras(bundle);
        }
        startActivity(intent);
    }
    //不携带数据但有返回数据的页面跳转
    public void startActivityForResult(Class<?> clz, int requestCode) {
        startActivityForResult(clz, null,requestCode);
    }
    //携带数据也有返回数据的页面跳转
    public void startActivityForResult(Class<?> cls, Bundle bundle, int requestCode) {
        Intent intent = new Intent();
        intent.setClass(getActivity(), cls);
        if (bundle != null) {
            intent.putExtras(bundle);
        }
        startActivityForResult(intent, requestCode);
    }


    @Override
    public void onDestroyView() {
        super.onDestroyView();
        if (unbinder!=null) {
            unbinder.unbind();
        }
    }
}
